home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / amiga / opalvisn / devdocs.lha / Examples / Convert24.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-05  |  2.8 KB  |  133 lines

  1. #include <exec/types.h>
  2. #include <opal/opallib.h>
  3. #include <proto/all.h>
  4. #include <string.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. struct OpalBase *OpalBase;
  9. struct OpalScreen *OScrn;
  10.  
  11. #define VERSION "1.1"
  12.  
  13.  
  14.     /* 2.0 style version string for the VERSION command */
  15. char Version[] = "\0$VER: Convert24 "VERSION " (5.11.92)";
  16.  
  17.  
  18. char Usage[] =
  19.     "Usage: Convert24 SourceFile [to] DestFile [as] [FAST|IFF24|JPEG|Other] [QUALITY nn] \n";
  20.  
  21. char Banner[] = "Convert24 V"VERSION" by Martin Boyd, ⌐1992 Opal Technology Pty Ltd.\n";
  22.  
  23. #define OR ||
  24. #define AND &&
  25.  
  26. void Clean_Up (char *String,int RetCode);
  27.  
  28.  
  29. void main (int argc,char *argv[])
  30. {
  31.    register int i;
  32.    int Quality;
  33.    long Err;
  34.    BOOL FastFormat,JPEG,Error;
  35.    char *SourceFile,*DestFile;
  36.  
  37.     puts (Banner);
  38.     if (argc<3)
  39.         Clean_Up (Usage,0);
  40.     FastFormat = FALSE;
  41.     JPEG = FALSE;
  42.     SourceFile = NULL;
  43.     DestFile = NULL;
  44.     Quality = 75;
  45.     for (i=1; i<argc; i++)
  46.         { if ((stricmp (argv[i],"to")) AND (stricmp (argv[i],"as"))
  47.             AND (stricmp(argv[i],"IFF24")))
  48.             { if (!stricmp(argv[i],"FAST"))
  49.                 FastFormat = TRUE;
  50.               else
  51.                 if (!stricmp(argv[i],"JPEG"))
  52.                     JPEG = TRUE;
  53.               else
  54.                 if (!stricmp(argv[i],"QUALITY"))
  55.                     { i++;
  56.                       Quality = -1;
  57.                       if (i>=argc)
  58.                         Clean_Up (Usage,0);
  59.                       sscanf (argv[i],"%d",&Quality);
  60.                       if ((Quality<0) OR (Quality>100))
  61.                         Clean_Up ("Invalid Quality level, must be 0 to 100",10);
  62.                     }
  63.               else
  64.                 if (SourceFile==NULL)
  65.                     SourceFile = argv[i];
  66.               else
  67.                 if (DestFile==NULL)
  68.                     DestFile = argv[i];
  69.             }
  70.         }
  71.  
  72.     if ((SourceFile==NULL) OR (DestFile==NULL))
  73.         Clean_Up (Usage,0);
  74.  
  75.     OpalBase = (struct OpalBase *) OpenLibrary ("opal.library",0L);
  76.     if (OpalBase==0L)
  77.         Clean_Up ("Can't open opal.library\n",10);
  78.  
  79.     
  80.     puts ("loading..");
  81.     OScrn = NULL;
  82.     Err = LoadImage24 (NULL,SourceFile,VIRTUALSCREEN24|FORCE24);
  83.     if (Err < OL_ERR_MAXERR)
  84.         { if (Err==OL_ERR_OPENFILE)
  85.             Clean_Up ("Error opening file!!\n",10);
  86.           else if ((Err==OL_ERR_NOTILBM) OR (Err==OL_ERR_BADIFF)
  87.             OR (Err==OL_ERR_NOTIFF))
  88.             Clean_Up ("Not an IFF ILBM file!!\n",10);
  89.           else if (Err==OL_ERR_OUTOFMEM)
  90.             Clean_Up ("Out of memory!!\n",10);
  91.           else if (Err==OL_ERR_CTRLC)
  92.             Clean_Up ("",0);
  93.           else
  94.             Clean_Up ("Error displaying file!!\n",10);
  95.         }
  96.  
  97.     OScrn = (struct OpalScreen *)Err;
  98.     puts ("Saving..");
  99.     Error = FALSE;
  100.     if (FastFormat)
  101.         { if (SaveIFF24 (OScrn,DestFile,NULL,OVFASTFORMAT))
  102.             Error = TRUE;
  103.         }
  104.     else if (JPEG)
  105.         { if (SaveJPEG24 (OScrn,DestFile,NULL,Quality))
  106.             Error = TRUE;
  107.         }
  108.     else
  109.         { if (SaveIFF24 (OScrn,DestFile,NULL,NULL))
  110.             Error = TRUE;
  111.         }
  112.     if (Error)
  113.         Clean_Up ("Error Saving File\n",10);
  114.     Clean_Up ("Conversion complete.\n",0);
  115. }
  116.  
  117. void _abort (void)
  118. {
  119.     Clean_Up ("Aborted\n",5);
  120. }
  121.  
  122. void Clean_Up (char *String,int RetCode)
  123. {
  124.     if (OScrn!=NULL)
  125.         FreeScreen24 (OScrn);
  126.     if (OpalBase!=NULL)
  127.         CloseLibrary ((struct Library *)OpalBase);
  128.     puts (String);
  129.     exit (RetCode);
  130. }
  131.  
  132.  
  133.